Skip to content

fix(governance): validate exact source-hub candidate governance before publication (ticket-217) - #220

Merged
ifuri-validator-agent[bot] merged 1 commit into
mainfrom
ticket/217-source-hub-candidate-governance
Oct 28, 2026
Merged

ifuri-validator-agent[bot] merged 1 commit into
mainfrom
ticket/217-source-hub-candidate-governance

Conversation

@tom-sapletta-com

Copy link
Copy Markdown
Contributor

Validate the exact source-hub candidate against governance/manifest.hub.json with accepted base, exact head, and --actor ci before running expensive source-hub suites or publishing a PR; route goal governance workspace-check to scripts/workspace_lifecycle_check.py in the source hub; reject non-canonical --ticket identifiers before preflight suites; and include preflight duration in total workflow timing.

Closes #145

@ifuri-validator-agent ifuri-validator-agent Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Validator approval after policy checks for exact head 86299875e67b8dffcccf44998ba4c107c175c6b1.

Ticket: ticket-217
Correlation ID: local-semcod-goal-pr-220-ticket-217
Model: ollama/qwen3-coder:30b
Advisory LLM review: LLM_UNAVAILABLE
Reason: LLM response missing keys: test_assessment, verdict
This approval rests on the deterministic checks alone; no advisory opinion was recorded for this head.
Semantic review prerequisite: not_required; policy 676cb4516bbfed2a000e40b9b1b6e4a430ecc761ec546aeb53d721a1905cfdd7.

Actual PR impact radar

Exact range: 7607bf6bc6235e3bf0d213fed3f372a80b9af118...86299875e67b8dffcccf44998ba4c107c175c6b1
Change digest: 466474ce9bba921ebd7af3f14bcffc6b6f992083264a27843bfc6acf86719586
Score: 64/100 (L), estimated 88 min, split recommended: true
Affected services/components: repository-wide/unclassified

Machine-readable radar JSONL and SVG
{"actual_change":{"additions":729,"base_sha":"7607bf6bc6235e3bf0d213fed3f372a80b9af118","binary_files":0,"categories":{"code":3,"configuration":1,"docs":2,"tests":2},"change_digest":"466474ce9bba921ebd7af3f14bcffc6b6f992083264a27843bfc6acf86719586","comparison":"7607bf6bc6235e3bf0d213fed3f372a80b9af118...86299875e67b8dffcccf44998ba4c107c175c6b1","deletions":311,"file_count":8,"files":["goal/cli/governance_cmd.py","goal/governance/delivery.py","goal/push/core.py","project/TICKETS.md","project/ticket-217/README.md","project/ticket-217/intent.json","tests/test_governance_cmd.py","tests/test_governance_delivery.py"],"head_sha":"86299875e67b8dffcccf44998ba4c107c175c6b1","service_count":0,"services":[]},"assessment_mode":"observed-pr","axes":{"coupling":5,"delivery":2,"scope":5,"uncertainty":3,"validation":1},"complexity":"L","confidence":0.9,"diagnostics":["RADAR-ACCEPTANCE-MISSING","RADAR-BUDGET-EXCEEDED"],"estimate":{"budget_minutes":30,"minutes":88,"within_budget":false},"impact":{"components":["goal","governance","project","scripts","tests"],"files":["goal/cli/governance_cmd.py","goal/governance/delivery.py","goal/push/core.py","governance/manifest.hub.json","project/TICKETS.md","project/ticket-217/README.md","project/ticket-217/intent.json","scripts/workspace_lifecycle_check.py","tests/test_governance_cmd.py","tests/test_governance_delivery.py"],"public_interfaces":[],"runtime_dependencies":0},"schema":"subactor.ticket-radar/v1","score":64,"split":{"parts":[{"estimated_minutes":16,"name":"Implement goal","scope":["goal"]},{"estimated_minutes":16,"name":"Implement governance","scope":["governance"]},{"estimated_minutes":16,"name":"Implement project","scope":["project"]},{"estimated_minutes":16,"name":"Implement scripts","scope":["scripts"]},{"estimated_minutes":16,"name":"Implement tests","scope":["tests"]},{"estimated_minutes":15,"name":"Validate and project to trackers","scope":["tests","planfile","github/gitlab/jira projections"]}],"reason":"estimated_minutes_exceed_budget","recommended":true},"standards":[{"id":"wellmanifest/dsl","revision":"6c60fc4e0dd1f1bb74f46a7745e28019908d1203","version":"0.1.0-dev"},{"id":"wellmanifest/ticket-lifecycle","revision":"5bf581907a87b46a13a73e6c033d3abe4d9a306f","version":"0.1.0-dev"},{"id":"wellmanifest/git-lifecycle","revision":"7d77d4b7af57e69bc75c3a0290b3a4805c5c4438","version":"0.2.0-dev"},{"id":"wellmanifest/logs","revision":"48c284ef7a069055c0bcb6b900147ce5e65f8b43","version":"0.3.0"}],"ticket_ref":"ticket-217"}
<svg xmlns="http://www.w3.org/2000/svg" width="128" height="128" viewBox="0 0 128 128" role="img"><title>ticket-217: fix(governance): validate exact source-hub candidate governance before publication (ticket-217)</title><rect width="128" height="128" rx="12" fill="#f8fafc"/><g stroke-width="1"><polygon points="64,55 72,61 69,71 59,71 56,61" fill="none" stroke="#d7dde5"/><polygon points="64,47 80,59 74,78 54,78 48,59" fill="none" stroke="#d7dde5"/><polygon points="64,38 89,56 79,85 49,85 39,56" fill="none" stroke="#d7dde5"/><polygon points="64,30 97,53 84,92 44,92 31,53" fill="none" stroke="#d7dde5"/><polygon points="64,21 105,51 89,99 39,99 23,51" fill="none" stroke="#d7dde5"/><line x1="64" y1="64" x2="64" y2="21" stroke="#aab4c0"/><line x1="64" y1="64" x2="105" y2="51" stroke="#aab4c0"/><line x1="64" y1="64" x2="89" y2="99" stroke="#aab4c0"/><line x1="64" y1="64" x2="39" y2="99" stroke="#aab4c0"/><line x1="64" y1="64" x2="23" y2="51" stroke="#aab4c0"/></g><polygon points="64,21 105,51 79,85 59,71 48,59" fill="#fb923c" fill-opacity="0.45" stroke="#c2410c" stroke-width="2"/><circle cx="64" cy="64" r="3" fill="#c2410c"/><g font-family="sans-serif" font-size="7" fill="#334155"><text x="64" y="11" text-anchor="middle">SCO</text><text x="114" y="48" text-anchor="middle">COU</text><text x="95" y="107" text-anchor="middle">UNC</text><text x="33" y="107" text-anchor="middle">VAL</text><text x="14" y="48" text-anchor="middle">DEL</text></g><text x="64" y="124" text-anchor="middle" font-family="sans-serif" font-size="8" fill="#0f172a">L · 88m</text></svg>
Merge will be attempted after this approval when explicitly authorized. ## Decision record (recomputable)
DECISION D-217-6246
TICKET ticket-217
HEAD_SHA 86299875e67b8dffcccf44998ba4c107c175c6b1
CORRELATION_ID local-semcod-goal-pr-220-ticket-217
ACTOR agent:ifuri-validator-agent[bot]
APPLIED_RULE P-CORE-015
INPUT author_login = "tom-sapletta-com"
INPUT observed_checks = ["governance / remote lifecycle=PASS","test (3.12)=PASS","governance / enforce=PASS","test (3.13)=PASS","onedev/local-verify=PASS"]
INPUT required_checks = ["onedev/local-verify","test (3.12)","test (3.13)","governance / remote lifecycle","governance / enforce"]
INPUT required_checks_source = "protected registry + GitHub applied rules (env/request)"
INPUT reviewer_login = "ifuri-validator-agent[bot]"
INPUT semantic_review_assessment = {"schema":"subactor.validator/semantic-review-assessment/v1","subject":{"repository":"semcod/goal","pull_request":220,"head_sha":"86299875e67b8dffcccf44998ba4c107c175c6b1","base_sha":"7607bf6bc6235e3bf0d213fed3f372a80b9af118","diff_sha256":"7d1cce51e9f5368fdbe333184c3df1523a6eee12b2d97d94544e99a1ca61c9a9"},"policy":{"policy_schema":"subactor.validator/semantic-review-policy/v1","policy_version":1,"policy_sha256":"676cb4516bbfed2a000e40b9b1b6e4a430ecc761ec546aeb53d721a1905cfdd7","required":false,"critical_paths":[],"observed_paths":["goal/cli/governance_cmd.py","goal/governance/delivery.py","goal/push/core.py","project/TICKETS.md","project/ticket-217/README.md","project/ticket-217/intent.json","tests/test_governance_cmd.py","tests/test_governance_delivery.py"]},"grounding":"full-diff-not-per-finding-proof","execution_authority":false,"status":"not_required","reason":null,"review_sha256":null,"unresolved":[]}
INPUT superseded_checks = []
INPUT ticket_radar_receipt = {"schema":"subactor.ticket-radar/v1","base_sha":"7607bf6bc6235e3bf0d213fed3f372a80b9af118","head_sha":"86299875e67b8dffcccf44998ba4c107c175c6b1","change_digest":"466474ce9bba921ebd7af3f14bcffc6b6f992083264a27843bfc6acf86719586","score":64,"complexity":"L","estimated_minutes":88,"split_recommended":true,"services":[],"authority":"ADVISORY","promotion":"FORBIDDEN"}
VERDICT APPROVE AUTHORITY DETERMINISTIC
REJECTED REQUEST_CHANGES BECAUSE NO_UNSAFE_CHANGE_REASON_FOUND
ADVISORY llm_verdict = "" MODEL "ollama/qwen3-coder:30b"
ASSERT VERDICT_AUTHORITY != "ADVISORY"

@ifuri-validator-agent
ifuri-validator-agent Bot merged commit ef52387 into main Oct 28, 2026
5 checks passed
@ifuri-validator-agent
ifuri-validator-agent Bot deleted the ticket/217-source-hub-candidate-governance branch October 28, 2026 14:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Validate exact source-hub candidate governance before publication

1 participant